

#include "stdint.h"
#include "stdbool.h"		
#include "BSW_SystemService_OSCfg.h"


#define TRUE  1
#define FALSE 0


#ifndef	_BSW_SYSTEMSERVICE_OS_
#define	_BSW_SYSTEMSERVICE_OS_

/********************************************************************************************************************
|   Other Header File Inclusion
|*******************************************************************************************************************/

/********************************************************************************************************************
|   Compile Option Or Configuration Section (For Test/Debug)
|*******************************************************************************************************************/

/********************************************************************************************************************
|   Macro Definition
|*******************************************************************************************************************/

/********************************************************************************************************************
|   Enum Definition
|*******************************************************************************************************************/


/********************************************************************************************************************
|   Typedef Definition
|*******************************************************************************************************************/

/********************************************************************************************************************
|   Global Variables With Extern Linkage
|*******************************************************************************************************************/

extern	bool	b_TimerBaseFlag;		/*定时时基标志*/

/********************************************************************************************************************
|   Global Function Prototypes
|*******************************************************************************************************************/

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_CreateTask
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		e_TaskName: 任务名
					ui8_RunCount: 任务运行计数
					ui32_TickOffset: 节拍偏移量
					ui32_TimerCycle: 定时周期
					pf_Task: 任务地址
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，创建任务
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_CreateTask(e_TaskNameType e_TaskName, u8 ui8_RunCount,
										u32 ui32_TickOffset, u32 ui32_TimerCycle, void (*pf_Task)(void));

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_DeleteTask
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		e_TaskName: 任务名
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，删除任务
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_DeleteTask(e_TaskNameType e_TaskName);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_ActivateTask
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		e_TaskName: 任务名
					ui8_RunCount: 任务运行计数
					ui32_TimerCycle: 定时周期
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，激活任务
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_ActivateTask(e_TaskNameType e_TaskName, u8 ui8_RunCount, u32 ui32_TimerCycle);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_PauseTask
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		e_TaskName: 任务名
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，暂停任务
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_PauseTask(e_TaskNameType e_TaskName);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_RunScheduler
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		None
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，运行调度表
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_RunScheduler(void);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_RunTimerTask
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		None
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，运行定时任务
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_RunTimerTask(void);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_StartOS
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		None
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，启动OS
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_StartOS(void);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_ShutdownOS
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		None
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，关闭OS
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_ShutdownOS(void);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_SetTimerBaseFlag
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		None
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，置位时基标志
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_SetTimerBaseFlag(void);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_ReadTaskTimeConsuming
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		e_TaskName: 任务名称
Parameter[inout]:	None
Parameter[out]:		pui32_TaskTimeConsuming: 读取任务耗时变量地址
Return Value:		None
Description:		系统服务OS，读入任务耗时
|*******************************************************************************************************************/
extern	void	BSW_SystemService_OS_ReadTaskTimeConsuming(e_TaskNameType e_TaskName, u32 *pui32_TaskTimeConsuming);

/********************************************************************************************************************
Function Name:		BSW_SystemService_OS_SafetyRefresh
Sync/Async:			Synchronous
Reentrancy:			Non-Reentrant
Parameter[in]:		None
Parameter[inout]:	None
Parameter[out]:		None
Return Value:		None
Description:		系统服务OS，安全刷新
					定时周期调用此函数以刷新OS配置
|*******************************************************************************************************************/
void	BSW_SystemService_OS_SafetyRefresh(void);

#endif



